// #include<vector>
// #include<limits>
// #include<cstddef>
// #include<iostream>
// #include<sstream>
// #include<map>
// #include<algorithm>
// #include<tuple>
// #include<unordered_map>
// #include<functional>
// using namespace std;

// struct HuaXue{
//     int x, y;
// };
// class Chemry{
// public:
//     map<int, int> hasChem;
//     vector<int> ret;
//     int SafeTo(vector<HuaXue> &items){
        
//         for(auto i = 0; i < items.size(); i++){
//             auto it = items[i];
//             auto curN = ret.size();
            
//             auto addYuanNum = 0;
//             if(hasChem.find(it.x) == hasChem.end()) addYuanNum++;
//             if(hasChem.find(it.y) == hasChem.end()) addYuanNum++;
//             if((curN+1) == (hasChem.size()+addYuanNum) ) continue;
//             ret.push_back(i);
//             hasChem[it.x]=1;
//             hasChem[it.y] =1;
//         }
//         return items.size()-ret.size();
//     }   
// };
// int main(int, char**) {
//     // vector<string> its{
//     //     "1 2", 
//     //     "3 4",
//     //     "3 5",
//     //     "3 1",
//     //     "2 3",
//     //     "4 1", 
//     //     "2 6", 
//     //     "6 5",
//     // };
//     string data;
//     vector<HuaXue> hua;
//     while(getline(cin, data)){
//     // for(auto i = 0; i < its.size();i++){
//         // string data = its[i];
//         std::stringstream iss(data);
//         std::vector<int> allTok;
//         std::string token;
//         while(std::getline(iss, token, ' ')){
//             allTok.push_back(std::stoi(token));
//         }
//         if(allTok[0] == -1) break;
//         HuaXue it;
//         it.x = allTok[0];
//         it.y = allTok[1];
//         hua.push_back(it);
//     }
//     Chemry cm;
//     auto r = cm.SafeTo(hua);
//     std::cout << r << endl;
// }